using CoreProject.DTO;
using CoreProject.Model;
using System.Linq.Expressions;

namespace CoreProject.IRepository
{
    public interface IUsersRepository : IBaseRepository<User>
    {
        Task<List<User>> GetUsers(Expression<Func<User, bool>> whereLambda);
        Task<User> GetUser(Expression<Func<User, bool>> whereLambda);

        Task<(List<User> list, int count)> GetUsersByPage<type>(int page, int size, bool isAsc,
       Expression<Func<User, type>> orderLambda, Expression<Func<User, bool>> whereLambda);


        Task<List<MonthStatisticsDto>> GetMonthStatistics(int starMonth, int endMonth);

        Task<(List<User> list, int count)> VipList<type>(string name,int page, int size, bool isAsc,
       Expression<Func<User, type>> orderLambda);
    }
}
